def demo(a, b, c=1):
    return a + b + c

a = demo(1,2,3)
print(a)


demo(1,2,1,5,6,7,8)

# def demo(a, b, c=1, *args, **kwargs):

# def len(*args, **kwargs) 这个函数里面的 *args 和 **kwargs 是什么意思?

# *args 用于接收不确定个数的参数, 它会把传入的参数打包成一个元组
def demo(*args):
    print(args)

demo(1, 2, 3, 4)  # 输出: (1, 2, 3, 4) 注意这是元组

# **kwargs 用于接收不确定个数的键值对, 并打包成一个字典, 即Map
def demo(**kwargs):
    print(kwargs)

demo(a=1, b=2, c=3, d=4) # 输出: {'a': 1, 'b': 2, 'c': 3, 'd': 4}


def add2(x=1, y=1):
    print(x + y)


add2()  # 输出: 2


# 定义函数语法: def (define 的缩写, 命名规范和标识符一致, 蛇形命名法)
# def hanshu():

def add(x, y):
    print("x =", x, ", y =", y)
    print(x + y)


add(2, 3)  # 输出: x = 2 , y = 3   5

# python中可以指定变量值为多少, 但需要以 变量名=参数值 的形式传参
add(y=3, x=5)  # 输出: x = 5 , y = 3   8
